package com.libray_manager.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import com.library_manager.book.Book;
import com.library_manager.util.JdbcUtil;

/**
 * 书籍数据访问对象类(jdbc)
 * 
 * @author getan
 * 
 */
public class BookDao {
	/**
	 * 根据查询条件查询书籍信息列表
	 * 
	 * @param booktParams
	 * @return
	 * @throws Exception
	 */
	public List<Book> queryBook(Book booktParams) throws Exception {
		// 获取connection对象
		Connection con = JdbcUtil.getConnection();

		Statement st = con.createStatement();

		ResultSet rs = st.executeQuery("select * from tab_book");

		// 创建书籍信息列表对象(用于存放从数据库查询出的多个书籍信息)
		List<Book> bookList = new ArrayList<Book>();

		while (rs.next()) {
			// 创建书籍数据视图对象
			Book book = new Book();

			// 将数据库记录的每一个字段的值 赋值给 "书籍对象"对应的属性.
			// 即 书籍对象.学号 <= 该条书籍记录的学号
			book.setBookid(rs.getString("bookid"));
			book.setBookSpecies(rs.getString("bookSpecies"));
		    book.setBookname(rs.getString("bookname"));
		    book.setBooknumber(rs.getString("booknumber"));
		    book.setContent(rs.getString("content"));

			// 将该书籍对象 添入 书籍信息列表对象
			bookList.add(book);
		}
		// 释放数据库连接资源(切勿忘记)
		JdbcUtil.release();

		// 返回书籍信息列表对象(给servlet)
		return bookList;
	}

	/**
	 * 新增书籍信息
	 * 
	 * @param book
	 * @throws Exception
	 */
	public void insertBook(Book book) throws Exception {
		// 获取connection对象
		Connection con = JdbcUtil.getConnection();
		// 通过connection对象获得"预编译语句"对象
		PreparedStatement ps = con.prepareStatement("insert into tab_book(bookid,booknumber,bookname,content,bookSpecies) values(usid.nextval,?,?,?,?)");

		// 设置"预编译语句"对象中的参数(从1开始计数)
		ps.setString(1, book.getBooknumber());
		ps.setString(2, book.getBookname());
		ps.setString(3, book.getContent());
		ps.setString(4, book.getBookSpecies());
		

		// 执行sql操作
		ps.executeUpdate();
		
		// 释放数据库连接资源(切勿忘记)
		JdbcUtil.release();
	}

	/**
	 * 删除书籍信息
	 * 
	 * @throws SQLException 
	 */
	public void deleteBook(Book book) throws SQLException {
		// 获取connection对象
				Connection con = JdbcUtil.getConnection();
				// 通过connection对象获得"预编译语句"对象
			
				PreparedStatement ps = con.prepareStatement("delete from tab_Book where bookid=bookid");
				// 执行sql操作
			
				ps.executeUpdate();
				
				// 释放数据库连接资源(切勿忘记)
				JdbcUtil.release();
	}

	/**
	 * 修改书籍信息
	 * 
	 * @throws SQLException 
	 */
	public void updateBook(Book book) throws SQLException {
		// TODO Auto-generated method stub
		
		Connection con = JdbcUtil.getConnection();
		// 通过connection对象获得"预编译语句"对象
PreparedStatement ps = con.prepareStatement("UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'WHERE LastName = '需要添加的ID'");
		// 执行sql操作
		ps.executeUpdate();
		
		// 释放数据库连接资源(切勿忘记)
		JdbcUtil.release();
		
	}

}
